package io.adrainty.bolee.insurance.models.bo;

import com.baomidou.mybatisplus.annotation.TableName;
import io.adrainty.bolee.framework.commons.basic.BaseBO;
import io.adrainty.bolee.framework.commons.basic.EnableEnum;
import io.adrainty.bolee.insurance.models.valobj.OrderStateEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>WarrantyOrderBO</p>
 *
 * @author AdRainty
 * @version V1.0.0
 * @description 合同订单
 * @since 2025/8/26 10:20:17
 */

@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tab_warranty_order")
@Schema(description = "合同订单")
public class WarrantyOrderBO extends BaseBO {

    @Serial
    private static final long serialVersionUID = 4233030002666898335L;

    @Schema(description = "投保人姓名")
    private String applicantName;

    @Schema(description = "投保人身份证号码")
    private String applicantIdentityCard;

    @Schema(description = "订单编号")
    private String orderNo;

    @Schema(description = "保单编号")
    private String warrantyNo;

    @Schema(description = "总期数")
    private Integer periods;

    @Schema(description = "当前期数")
    private Integer currentPeriod;

    @Schema(description = "期交保费")
    private BigDecimal premium;

    @Schema(description = "总保费")
    private BigDecimal premiums;

    @Schema(description = "周期单位")
    private String periodicUnit;

    @Schema(description = "支付宝签约号:关联支付")
    private String agreementNo;

    @Schema(description = "计划时间")
    private LocalDateTime scheduleTime;

    @Schema(description = "实际时间")
    private LocalDateTime actualTime;

    @Schema(description = "宽限期截止时间")
    private LocalDateTime graceTime;

    @Schema(description = "复效期截止时间")
    private LocalDateTime revivalTime;

    @Schema(description = "状态（0待付款 1已付款 2逾期 3补缴 4付款失败 5付款中）")
    private OrderStateEnum orderState;

    @Schema(description = "排序")
    private Integer sortNo;

    @Schema(description = "企业编号")
    private String companyNo;

    @Schema(description = "支付渠道【支付宝、微信、三方银行】")
    private String tradingChannel;

    @Schema(description = "代理人Id")
    private String agentId;

    @Schema(description = "代理人姓名")
    private String agentName;

    @Schema(description = "代理人费用")
    private BigDecimal agentFee;

    @Schema(description = "平台代理费用")
    private BigDecimal platformFee;

    @Schema(description = "数据状态：0正常 1禁用")
    private EnableEnum dataState;

}
